#include <stdio.h>
#include <stdlib.h>

#include <slerp.h>

using namespace std;

void imprimir(float* cuaternioA, float* cuaternioB, double t, float* cuaternio){
     printf("%s \n", "La interpolacion de los siguientes cuaternios: ");
     printf("%s %1.3f %s %1.3f%s %1.3f%s %1.3f%s \n", "Cuaternio A", cuaternioA[0], "+", cuaternioA[1], "x +", cuaternioA[2], "y +", cuaternioA[3], "z");
     printf("%s %1.3f %s %1.3f%s %1.3f%s %1.3f%s \n", "Cuaternio B", cuaternioB[0], "+", cuaternioB[1], "x +", cuaternioB[2], "y +", cuaternioB[3], "z");
     printf("%s %f \n", "Con el angulo:", t);
     printf("%s \n", "El algoritmo de Slerp da como resultado: ");
     printf("%1.3f %s %1.3f%s %1.3f%s %1.3f%s \n", cuaternio[0], "+", cuaternio[1], "x +", cuaternio[2], "y +", cuaternio[3], "z");     
}

int main(){
    float* cuaternioA = new float[4];
    float* cuaternioB = new float[4];
    float* cuaternioResultante = new float[4];
    double t;
    
    //Inicializamos
    cuaternioA[0] = 0; 
    cuaternioA[1] = 0; 
    cuaternioA[2] = 0; 
    cuaternioA[3] = 0;
    cuaternioB[0] = 1; 
    cuaternioB[1] = 1; 
    cuaternioB[2] = 1; 
    cuaternioB[3] = 1;
    t = 45;
    
    cuaternioResultante = slerp(cuaternioA, cuaternioB, t);
    imprimir(cuaternioA, cuaternioB, t, cuaternioResultante);

    return 0;
}
